iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0

古典密碼學

單表

說真的,如果要我說,最能代表古典密碼學的就是『凱撒密碼』了。

凱撒密碼是將英文順序位移一段後得到的密碼。

例如:

ABCD
↓↓↓↓
CDEF

以此類推的簡單密碼替換。
其公式:

加密:E(x) = (x+n) mod 26
解密:D(x) = (x-n) mod 26

這種方式無敵好破解的,不管是窮舉還是統計分析方式,都是幾秒鐘就能破解的。
但卻是很經典的一種加密,在課堂上的時候很適合使用(誤。


對了,這種方式並不是『位移』而是『替換』喔。

位移的話,是將資料順序打亂但不會有資料被替代。
替換的話,是將資料換成另一個資料,而順序不變。

我簡單舉個例子:

替換:          位移:  
    ABCD            ABCD
    ↓↓↓↓            ↓↓↓↓
    CDEF            1234
                    (順序逆)
                    4321
                    ↓↓↓↓
                    DCBA

例如很相似的『仿射密碼』、『阿特巴希密碼』其實也都是利用類似的原理來做替換。
而替換的複雜度其實就是更加複雜,但依然離不開『單表』替換的本質。

什麼是單表?

簡單來說,A替換成B,是絕對的,不會因為前後或者其他的變異造成不同的替換結果。
而只要能統計出來替換表,那基本上全部的密碼都按照單一應對表的規則來做替換。
這也導致了很容易就可以使用統計的方式來破解。

多表

那如果加入前後的對應關係,導致替換的值不一樣呢?

那就是多表的替換方式,例如:『維吉尼亞密碼』、『自動密鑰密碼』。

維吉尼亞密碼就是靠著『關鍵字』+『資料』兩個組合而成的密碼。

簡單的說(以下為簡化的例子):

關鍵字的數字為對應的替換行,在由此行去對照列來替換資料。
   1 2 3
  ------
1|2 3 4
2|5 6 7
3|8 9 10

關鍵字:『231』(像是金鑰)
資料:『123』(明文)

1. 關鍵字的一個為『2』找到 行的2 得到 1對5、2對6、3對7。
    替換明文,1對5。
    加密後:5

2. 關鍵字的二個為『3』找到 行的3 得到 1對8、2對9、3對10。
    替換明文,2對9。
    加密後:59

3. 關鍵字的二個為『1』找到 行的1 得到 1對2、2對3、3對4。
    替換明文,3對4。
    加密後:594

差不多就是這樣,能看得出來,從原本的單一表格變成了『多表格』。

以古典密碼來說,都是很簡單的一些基礎原理。

但同時也奠定了現在所有密碼學的基礎之一。

一樣都逃不開『替換』跟『位移』。

到了AES的時候,也會出現多表轉換,也會有經典的固定位移。

如果說把單表的替換,做個N次,一樣會很簡單能被破解嗎?

如果我將多表在做N次並且關鍵字也同實做多表,會那麼容易被破解嗎?

破解包括:

  1. 破解加密原理。
  2. 破解密文變成明文。
  3. 破解規則表。

你們覺得如果將這些古典加密,做個多次,有哪些能被簡單的破解,哪些會變成困難?

這就給大家自由思考了~


其他

古典密碼差不多就到這裡了,再接下去就是現代密碼的範疇。

但我想說一些基於古典密碼學的衍生或者進化後的東西。

Base64

Base64其實如果嚴格來說,也算是利用了密碼學中的替換。

但不同的是它是公開且固定的替換表,與其說是加密,應該說是編碼。

其實密碼學很多理論不只單單是加密,而很多也牽涉到了現代的編碼理論。

詳細的Base64我就不解說了,有興趣的話可以看一下Wiki,只是想要提到密碼學不只加密,而有些變成了編碼理論的一部份。

恩尼格瑪密碼機(進階的旋轉機、現代流加密)

德軍在二戰時期的時候用的加密系統就是『恩尼格瑪密碼機』。

它跳脫了古典加密的手法,卻又有古典加密深深的影子。

如果把『多表』的古典加密變成更多表的加密,並且規定前一個字母會影響後一個字母。

使其每個字母都會相對地變動,得到類似於現代的複合式加密的方法。

裡面的機制十分的精彩,但在後面的現代加密中卻很難在提到。

因此放在古典與現代密碼學的中間,再適合不過了。

恩尼格瑪密碼機 Wiki


參考資料

凱撒密碼 Wiki

維吉尼亞密碼 Wiki

Base64 Wiki

恩尼格瑪密碼機 Wiki


上一篇
[Day 2] 002 - 密碼學的細分與類別
下一篇
[Day 4] 004 - 對稱密鑰演算法 - Symmetric-key algorithm(一)
系列文
無趣的密碼學,有趣的加密!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言